// pages/guide/guide.js
const util = require('../../utils/util.js')
const app = getApp()
Page({
  /**
   * 页面的初始数据
   */
  data: {
    canIUseGetUserInfo: wx.canIUse('button.open-type.getUserInfo'),  //判断是否能通过点击button发起授权获取用户信息
    canIUseGetPhoneNumber: wx.canIUse('button.open-type.getPhoneNumber'), //判断是否能通过点击button发起授权获取手机号码
    hideGetUI: true,  //获取用户信息按钮
    hideGetPN: true,
    /*  */
    userInfo_sj: {
      miniProType: '1',  //商家端小程序
      //Url: 'http://192.168.103.101:8080/car',  //请求地址
      Url: 'http://sapp.csgxcf.com/car',
      contentType: 'application/x-www-form-urlencoded;charset=utf-8',  //header -> contentType
      header: {
        'content-type': 'application/x-www-form-urlencoded;charset=utf-8',  //header -> contentType
        'cartoken': ''
      },
      /* 订阅消息授权 */
      subScribeMessageCode: 'omfMIp7sZx8zEeQZjq1--3BqWkZSQe2KWfB7WMKXhWU',
      /*  */
      userInfo: null,  //用户基本信息
      token: '',  //后台返回的token
      userid: '',  //userid
      mobile: '',   //手机号码
      openid: '',   //openid
      session_key: '',  //session_key
      address:'',  //商家地址
      level:'',  //门店星级
      storeId:'',    //门店Id
      storeName:'',  //门店名称
      isOpenScopePos:false,  //是否已打开授权获取位置信息
    }
  },
  /* 点击“去看看”直接进入主页 */
  goToIndex: function(){
    wx.switchTab({
      url: '/pages/index/index',
    })
  },
  /* 获取用户信息 */
  getUserInfoFn: function (e) {
    console.log(e)
    if (e.detail.errMsg == 'getUserInfo:ok') {
      wx.showLoading({
        title: '跳转中...'
      })
      this.setData({
        'userInfo_sj.userInfo': e.detail.userInfo
      })
      this.user_loginWx().then(() => {
        /*  */
        if(!this.data.userInfo_sj.mobile){
          wx.navigateTo({
            url: '/pages/login2/login2'
          })
        }else{
          wx.switchTab({
            url: '/pages/index/index'
          })
        }
      }).catch(errMsg => {
        wx.showModal({
          title: '提示',
          content: errMsg + '',
          showCancel: false,
          confirmColor: app.globalData.modalConfirmColor
        })
      }).finally(() => {
        wx.hideLoading()
      })
    } else {
      wx.showModal({
        title: '提示',
        content: '请允许授权',
        showCancel: false,
        confirmColor: app.globalData.modalConfirmColor
      })
    }
  },
  /* wx.login */
  wx_login: function () {
    return new Promise((resolve, reject) => {
      wx.login({
        success: res => {
          if (res.errMsg === 'login:ok') {
            // 发送 res.code 到后台换取 openId, sessionKey, unionId
            resolve(res)
          } else {
            reject(res.errMsg)
          }
        },
        fail: err => {
          reject('wx.login失败')
        }
      })
    })
  },
  /* 从后台获取openid和sesion_key */
  user_getSissonkey: function (data) {
    //console.log(data)
    return new Promise((resolve, reject) => {
      app.globalData.code = data.code
      wx.request({
        url: app.globalData.Url + '/getSissonkey',
        method: 'POST',
        header: {
          'content-type': app.globalData.contentType
        },
        data: util.json2Form({
          code: data.code,  //
          type: this.data.userInfo_sj.miniProType //商家端小程序
        }),
        success: res => {
          console.log(res.data)
          if (res.data.code == '1') {
            let tmpData = JSON.parse(res.data.body)
            if (!tmpData.session_key && !tmpData.openid) {
              reject('从后台获取session_key和openid失败，无法进行授权登录操作！')
              return
            }
            this.setData({
              'userInfo_sj.session_key': tmpData.session_key,
              'userInfo_sj.openid': tmpData.openid
            })
            //信息存缓存
            wx.setStorageSync('userInfo_sj', this.data.userInfo_sj)
            resolve()
          } else {
            reject('从后台获取session_key和openid失败，无法进行授权登录操作！')
          }
        },
        fail: err => {
          reject('从后台获取session_key和openid失败，无法进行授权登录操作！')
        }
      })
    })
  },
  /* 获取登录用户的后台信息 */
  user_loginWx: function () {
    return new Promise((resolve, reject) => {
      wx.request({
        url: app.globalData.Url + '/loginWxStore',
        method: 'POST',
        header: {
          'content-type': app.globalData.contentType
        },
        data: util.json2Form({
          avatar: this.data.userInfo_sj.userInfo.avatar,  //头像
          nickName: this.data.userInfo_sj.userInfo.nickName,  //昵称
          openid: this.data.userInfo_sj.openid,    //openid
        }),
        success: res => {
          console.log(res)
          this.setData({
            'userInfo_sj.token': res.data.body.token,
            'userInfo_sj.header.cartoken': res.data.body.token,
            'userInfo_sj.userid': res.data.body.userid,
            'userInfo_sj.mobile': res.data.body.mobile,
            'userInfo_sj.storeId': res.data.body.storeId||'',
            'userInfo_sj.storeName': res.data.body.storeName||'',
            'userInfo_sj.address': res.data.body.address||'暂未添加门店地址',
            'userInfo_sj.level': res.data.body.level||0,
          })
          //信息存缓存
          wx.setStorageSync('userInfo_sj', this.data.userInfo_sj)
          resolve()
        },
        fail: err => {
          reject('获取与登录用户对应的后台信息失败')
        }
      })
    })
  },
  /* 授权之前 */
  user_authorize_before: function () {
    wx.showLoading({
      title: '',
      mask: true
    })
    this.wx_login().then(res => {
      return this.user_getSissonkey(res)
    }).then(() => {
      wx.hideLoading()
      //显示授权按钮
      this.setData({
        hideGetUI: false
      })
    }).catch(errMsg => {
      wx.hideLoading()
      wx.showModal({
        title: '提示',
        content: errMsg + '',
        showCancel: false,
        confirmColor: app.globalData.modalConfirmColor,
        success: res => {
          if (res.confirm) {
            //this.user_authorize_before()
          }
        }
      })
      //隐藏授权按钮
      this.setData({
        hideGetUI: true
      })
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    let userInfo_sj = app.globalData.get_userInfo() || {}
    console.log(userInfo_sj)
    if (userInfo_sj.token&&userInfo_sj.mobile) {
      wx.switchTab({
        url: '/pages/index/index'
      })
    } else {
      //授权之前获取openid
      this.user_authorize_before()
    }
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})